import { validatorFactory } from './validatorFactory'

// 手机号码验证
export const telValidatorFactory = (require: boolean) =>
  validatorFactory({
    label: '手机号码',
    reg: /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1589]))\d{8}$/,
    require
  })

// 电话号码验证
export const phoneValidatorFactory = (require: boolean) =>
  validatorFactory({
    label: '电话号码',
    reg: /^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/,
    require
  })

// 身份证验证
export const IDValidatorFactory = (require: boolean) =>
  validatorFactory({
    label: '身份证',
    reg: /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/,
    require
  })

export const usernameValidator = validatorFactory({
  label: '用户名',
  reg: /^\w*$/,
  validateFailMsg: '用户名只能包含字母和数字',
  valueMinLength: 4,
  valueMaxLength: 16
})

// 密码验证
export const passwordValidator = validatorFactory(
  // 规则1 用户密码长度必须介于 6 和 20 之间
  {
    label: '密码',
    valueMinLength: 6,
    valueMaxLength: 20
  }

  // 规则2 用户密码必须包含大小写字符，长度 8 到 16 位
  // {
  //   label: '密码',
  //   reg: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/,
  //   validateFailMsg: '用户密码必须包含大小写字符，长度 8 到 16 位'
  // }

  // 规则3 用户密码必须以大写字母开始,包含大小写字符,数字或特殊字符(!@#%*),长度 8 到 16 位
  // {
  //   label: '密码',
  //   reg: /^[A-Z](?=.*[a-z])(?=.*[0-9!@#%*])[^]{7,15}$/,
  //   validateFailMsg: '用户密码必须以大写字母开始,包含大小写字符,数字或特殊字符(!@#%*),长度 8 到 16 位'
  // }

  // 规则4 用户密码必须包含大小写字符，数字，特殊字符(!@#%*)，长度 8 到 16 位
  // {
  //   label: '密码',
  //   reg: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#%*])[^]{8,16}$/,
  //   validateFailMsg: '用户密码必须包含大小写字符，数字，特殊字符(!@#%*)，长度 8 到 16 位'
  // }

  // 用户密码必须以大写字母开始，包含大小写字符，数字和特殊字符(!@#%*)，长度 8 到 16 位
  // {
  //   label: '密码',
  //   reg: /^[A-Z](?=.*\d)(?=.*[a-z])(?=.*[!@#%*])[^]{7,15}$/,
  //   validateFailMsg:
  //     '用户密码必须以大写字母开始，包含大小写字符，数字和特殊字符(!@#%*)，长度 8 到 16 位'
  // }
)
